1 FLOW
 
 FLOW uses a file produced by Floppy (see HELP FLOPPY) to produce reports 
 on the structure of the Fortran program on which Floppy was used.

 There is a "FLOPPY User Guide" DD/US/112 which describes the use
 of FLOW and FLOPPY, available in the UCO Batiment 513.

 Syntax:
  
 FLOW input_file /qualifier [/qualifiers] 
 
 Note that at least one qualifier must be given.

 If you have problems or questions about FLOW or FLOPPY, then please
 mail JULIAN@VXCERN.CERN.CH.

 FLOW is based on an original idea by P.Palazzi.

2 Parameter
input_file

  The input file is a file of type .FLOPTRE produced by Floppy.
  This file is easily created by using a Floppy command like:

  $ floppy myfile /nochecks /tree

  This file is a binary file, and cannot be viewed on the
  terminal. It can only be processed by Flow. The default
  file type is .floptre. A Flow command to operate on the
  floptre file produced above might thus be:

  $ flow myfile /structure

 
2 Qualifiers
 
/QUERY
 
  /QUERY
 
  Enter an interactive FLOW session, where the routine calling
  tree can be explored by specifying the node name, and seeing
  all routines calling the node and all routines that are called
  by the node. 

/STRUCTURE_CHART 

  /STRUCTURE_CHART[=(filename)]
  
  Create a file containing the calling tree of the source
  program. Each SUBROUTINE, PROGRAM or FUNCTION in the 
  source is a node in the calling tree. Each node is
  displayed in the chart so that one can see a) which
  other nodes call it, b) which nodes it calls, c) whether
  the node is external, a stub, a subtree node, d) the
  IF or DO level if the node is in an IF or DO clause.
  
  In addition, if the source FORTRAN contains a comment
  line IMMEDIATELY after each procedure declaration, e.g.
        SUBROUTINE INIJOB
  C! This subroutine initialises the job
 
  (the ! sign is important), then this comment is extracted
  and put as a label to the node name in the structure 
  chart. 

/GRAPHICS
 
  /GRAPHICS=(filename)
 
  Cause a picture file to be written, which may afterwards
  be viewed using a PostScript previewer (if /POSTSCRIPT
  is also specified). The picture file contains an approximate
  representation of the equivalent SASD structure chart that
  corresponds to the existing state of the Fortran code.
  An effort is made to position the modules (SUBROUTINEs, 
  FUNCTIONs, etc.) on the plot so that line crossing is 
  minimised, but this is not always successful! 

  It is recommended to use the /NOEXTERNAL qualifier together 
  with the /GRAPHICS qualifier: this helps to minimise the 
  complexity of the plot.

/NODE 

  /NODE=(nodename)
 
  Specify the name of the node in the program calling tree
  from which the flow should begin.
  
  NB This qualifier MUST only be used with the STRUCTURE_CHART 
     and GRAPHICS qualifiers.

/EXTERNALS 

  /EXTERNALS  (D)
  /NOEXTERNALS
  
  Specify whether the calling tree should contain the names
  of procedures external to the program or not. You should
  use this if you wish to suppress nodes such as SIN, COS,
  UCOPY etc from the flow.

  NB This qualifier can only be used with the STRUCTURE_CHART,
     GRAPHICS and QUERY qualifiers.

/COMMON_TABLE 

  /COMMON_TABLE[=(filename)]

  Create a table containing procedure names on one axis, and
  COMMON block names on the other, and indicate for each
  procedure/COMMON intersection whether the COMMON block is
  used or not in the procedure.  
 
/LOG
 
  /LOG  (D)
  /NOLOG
 
  Show a summary of the FLOW command parsing, or not.

2 Examples
 
  You must have a data file obtained using FLOPPY:
 
  $ FLOPPY /TREE /NOCHECKS  myfile.FOR
 
  the FLOPPY data will be called "myfile.FLOPTRE".
 
  Create a structure chart called STRUCTURE.CHT showing
  the calling sequence in myfile.FOR:
 
  $ FLOW myfile /STRUCTURE=STRUCTURE.CHT

  Ignore all externals, and start from the routine called INIJOB :
 
  $ FLOW myfile /STRUC /NOEXT /NODE=INIJOB
 
  Enter the interactive exploration facility of FLOW
 
  $ FLOW myfile /QUERY

